//1.在app.js中创建WEB服务器
//2.在user.js中创建路由器对象，添加用户注册的路由（post  /）,响应‘注册成功’，导出路由器对象
//3.在app.js中引入路由器user.js并挂载，添加前缀/v1/users
//4.在app.js中引入body-parser中间件，将post请求的数据解析为对象(所有的中间件都写在服务器中)
//5.在路由中获取数据
//6.在连接池模块pool.js中引入mysql模块，创建连接池对象，导出连接池对象
//7.在user.js下引入pool.js，使用连接池执行SQL命令，将获取的数据插入到数据表xz_user中
//8.在user.js下添加用户登录的接口(post  /login),获取传递的数据，验证各项数据是否为空，执行SQL命令
//如果查询到了用户名和密码同时匹配的数据响应登录成功，否则登陆失败
//9.在user.js下添加修改用户的接口（put  /）,获取传递的数据，验证各项数据（uid,email,phone,user_name,gender）是否为空
//执行SQL命令，返回修改成功或者修改失败
//用户列表路由（get  /）,传递页码值和每页的数据量，执行SQL命令，将查询的数据响应出来
//{code:200,msg:'查询成功',data:[]}


//引入express模块
const express=require('express');
//引入session模块
const session=require('express-session');
//引入路由器user.js
const userRouter=require('./router/user.js');
//引入路由器address.js
const addressRouter=require('./router/address.js');
//引入路由器classify.js
const classifyRouter=require('./router/classify.js');
//引入路由器coupon.js
const couponRouter=require('./router/coupon.js');
//引入路由器detail.js
const detailRouter=require('./router/detail.js');
//引入路由器laptop.js
const laptopRouter=require('./router/laptop.js');
//引入路由器merchant.js
const merchantRouter=require('./router/merchant.js');
//引入路由器merchantCoupon.js
const merchantCouponRouter=require('./router/merchantCoupon.js');
//引入路由器order.js
const orderRouter=require('./router/order.js');
//引入路由器carouse.js
const carouselRouter=require('./router/carousel.js');
//引入路由器tech.js
const techRouter=require('./router/tech.js');
//引入路由器techCarousel.js
const techCarouselRouter=require('./router/techCarousel.js');
//引入路由器article.js
const articleRouter=require('./router/article.js');
//引入路由器comment.js
const commentRouter=require('./router/comment.js');
//引入路由器collect.js
const collectRouter=require('./router/collect.js');
//引入路由器like.js
const likeRouter=require('./router/like.js');
//引入路由器video.js
const videoRouter=require('./router/video.js');
//引入路由器dm.js
const dmRouter=require('./router/dm.js');

//引入body-parser模块
const bodyParser=require('body-parser');
//console.log(userRouter);
//创建WEB服务器
const app=express();
//设置服务器端口
app.listen(9090);
//使用body-parser将post请求的数据解析为对象
app.use(bodyParser.urlencoded({
  extended:false
}));

// 加载CORS模块
const cors=require('cors');
// 使用CORS模块
app.use(cors({
  origin: ['http://localhost:8080', 'http://127.0.0.1:8080']
}));



// 配置multer中间件
const multer=require('multer');
obj=multer.diskStorage({
  destination:function(req,file,cb){//指定目录
    cb(null,'upload')
  },
  filename:function(req,file,cb){
    let name=file.originalname
    // console.log(name);
    let ext=name.substr(name.lastIndexOf('.'))
    cb(null,uuid.v4()+ext)
  }
})
const uploadTools=multer({
  storage:obj
})
const uuid=require('uuid')



// 配置session
app.use(session({
	name:'session-id',
	secret:'12345-67890',
	saveUninitialized:true,
	resave:false
}));
//添加托管静态资源中间件
app.use(express.static('upload'));
//挂载路由器user.js
app.use('/v1/users',userRouter);
//挂载路由器user.js
app.use('/v1/address',addressRouter);
//挂载路由器user.js
app.use('/v1/classify',classifyRouter);
//挂载路由器user.js
app.use('/v1/coupon',couponRouter);
//挂载路由器user.js
app.use('/v1/detail',detailRouter);
//挂载路由器user.js
app.use('/v1/laptop',laptopRouter);
//挂载路由器user.js
app.use('/v1/merchant',merchantRouter);
//挂载路由器user.js
app.use('/v1/merchantcoupon',merchantCouponRouter);
//挂载路由器user.js
app.use('/v1/order',orderRouter);
//挂载路由器user.js
app.use('/v1/carouse',carouselRouter);
//挂载路由器tech.js
app.use('/v1/tech',techRouter);
//挂载路由器techCarousel.js
app.use('/v1/techcarousel',techCarouselRouter);
//挂载路由器article.js
app.use('/v1/article',articleRouter);
//挂载路由器comment.js
app.use('/v1/comment',commentRouter);
//挂载路由器collect.js
app.use('/v1/collect',collectRouter);
//挂载路由器like.js
app.use('/v1/like',likeRouter);
//挂载路由器video.js
app.use('/v1/video',videoRouter);
//挂载路由器dm.js
app.use('/v1/dm',dmRouter);


//错误处理中间件
//要拦截所有产生的错误
app.use( (err,req,res,next)=>{
  //err 拦截到的错误
  //console.log(err);
  res.send({code:500,msg:'服务器端错误'});
});

//接收请求
app.post('/upload',
uploadTools.array('uploadFile'),(req,res)=>{
  let obj=req.files;
  console.log(obj);
  res.send({code:200,msg:'上传成功',name:`${obj[0].filename}`})
}
)

